﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using ERP_RORZE_PERMISSION.Base;
using ERP_RORZE_PRODUCT.Product.DAO;
using ERP_RORZE_DLL.Product.DAO;
using ERP_RORZE_DLL.Product.database;
using ERP_RORZE_TOOL.Common;
using BaseDAO = ERP_RORZE_TOOL.DBAccess.BaseDAO;
using Utilities = ERP_RORZE_TOOL.Common.Utilities;

namespace ERP_RORZE_PRODUCT.Product.XLBM
{
    public partial class frm_DataANOEdit : DevExpress.XtraEditors.XtraForm
    {
        ClsXLBM clsXLBM = new ClsXLBM();
        ClsWTSDAO clsWTSDAO = new ClsWTSDAO();
        DulieuANO ANO = new DulieuANO();
        public event EventHandler Reload;
        DataTable dt6;
        public string ID;
        private LogUtils log;
        bool flag;

        public frm_DataANOEdit()
        {
            InitializeComponent();
            log = new LogUtils();
        }

        private void frm_DataANOEdit_Load(object sender, EventArgs e)
        {
            try
            {
                // đổ dữ liệu vào grid

                dt6 = clsXLBM.GetDulieuslMa();
                gridControl1.DataSource = dt6;
                gridView1.BestFitColumns();

                //list staff
                DataTable dt;
                dt = clsWTSDAO.GetAllStaff();
                DataRow r = dt.NewRow();
                r["FullName"] = "";
                r["StaffID"] = "";
                dt.Rows.InsertAt(r, 0);
                cbStaff.DataSource = dt;
                cbStaff.DisplayMember = "FullName";
                cbStaff.ValueMember = "StaffID";

                //list me ma
                DataTable dt1;
                dt1 = BaseDAO.ExecuteQuery("select * from [242_MeMa] order by [Number]");
                DataRow r1 = dt1.NewRow();
                r1["Some"] = "";
                dt1.Rows.InsertAt(r1, 0);
                cbMeMa.DataSource = dt1;
                cbMeMa.DisplayMember = "Number";
                cbMeMa.ValueMember = "Some";

                //list MONo
                DataTable dt2;
                dt2 = clsXLBM.GetMONo();
                DataRow r2 = dt2.NewRow();
                r2["MONo"] = "";
                dt2.Rows.InsertAt(r2, 0);

                //List<ClsMOTable> objs = new List<ClsMOTable>();
                //foreach (DataRow r3 in dt2.Rows)
                //{
                //    ClsMOTable obj = new ClsMOTable();
                //    obj.MONo = r3["MONo"].ToString();
                //    obj.MOQty = int.Parse(r3["MOQty"].ToString());
                //    obj.PartID = r3["PartID"].ToString();
                //    obj.Moc8chinh = r3["Moc8chinh"].ToString();
                //    objs.Add(obj);
                //}

                cbOrderNo.DataSource = dt2;
                cbOrderNo.DisplayMember = "MONo";
                cbOrderNo.ValueMember = "MONo";

                DulieuANO b = new DulieuANO();
                DataTable dt3;
                b.ID = int.Parse(ID);
                dt3 = clsXLBM.GetAllByID(b);
                foreach (DataRow r4 in dt3.Rows)
                {
                    cbMeMa.SelectedValue = r4["AnoNo"].ToString();
                    cbOrderNo.SelectedValue = r4["OrderNo"].ToString();
                    cbStaff.SelectedValue = r4["Code"].ToString();
                    txtChieuDayMangMa.Text = r4["Chieu_day_mang"].ToString();
                    txtNhietDoH2SO4.Text = r4["Tank8_Temp"].ToString();
                    txtNhietDoMaiBong.Text = r4["Maibong_Temp"].ToString();
                    txtNhietDoNAOH.Text = r4["Tank3_Temp"].ToString();
                    txtNongDoH2SO4.Text = r4["Tank8_H2SO4"].ToString();
                    txtNongDoMaiBong.Text = r4["Maibong"].ToString();
                    txtNongDoNAOH.Text = r4["Tank3_NaOH"].ToString();
                    txtSoLanMaLai.Text = r4["Times"].ToString();
                    txtSoLuongMa.Text = r4["AnoQuan"].ToString();
                    txtTGNhungH2SO4.Text = r4["Tank8_Times"].ToString();
                    txtTGNhungMaiBong.Text = r4["Maibong_Times"].ToString();
                    txtTGNhungNAOH.Text = r4["Tank3_Times"].ToString();
                    txtSlLenh.Text = r4["MoQuan"].ToString();
                    txtPPXuly.Text = r4["Phuong_phap"].ToString();
                    txtPSinh.Text = r4["P_sinh"].ToString();
                    lblPartID.Text = r4["PartNo"].ToString();
                    lblMoc.Text = r4["Sltreo"].ToString();
                    dateDate.DateTime = (DateTime)r4["Date"];
                }
                flag = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(""+ex);
            }

        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (GetData())
            {
                ANO.ID = int.Parse(ID);
                ANO.Chieu_day_mang = decimal.Parse(txtChieuDayMangMa.Text);
                ANO.Code = cbStaff.SelectedValue.ToString();
                ANO.Date = dateDate.DateTime;
                ANO.AnoQuan = int.Parse(txtSoLuongMa.Text);
                ANO.Times = int.Parse(txtSoLanMaLai.Text);
                ANO.AnoNo = cbMeMa.Text;
                ANO.OrderNo = cbOrderNo.Text;
                ANO.Tank3_NaOH = decimal.Parse(txtNongDoNAOH.Text);
                ANO.Tank3_Times = decimal.Parse(txtTGNhungNAOH.Text);
                ANO.Tank8_H2SO4 = decimal.Parse(txtNongDoH2SO4.Text);
                ANO.Tank8_Temp = decimal.Parse(txtNhietDoH2SO4.Text);
                ANO.Tank8_Times = decimal.Parse(txtTGNhungH2SO4.Text);
                ANO.PartNo = lblPartID.Text;
                ANO.MoQuan = int.Parse(txtSlLenh.Text);
                ANO.Sltreo = int.Parse(lblMoc.Text);
                ANO.P_sinh = txtPSinh.Text;
                ANO.Phuong_phap = txtPPXuly.Text;
                ANO.Tank3_Temp = decimal.Parse(txtNhietDoNAOH.Text);
                ANO.Maibong = decimal.Parse(txtNongDoMaiBong.Text);
                ANO.Maibong_Temp = decimal.Parse(txtNhietDoMaiBong.Text);
                ANO.Maibong_Times = decimal.Parse(txtTGNhungMaiBong.Text);
                if (clsXLBM.UpdateDataANO(ANO)>0)
                {

                    //write Log
                    log.Table = LogConstant.Table.Product.XLBM;
                    log.Task = LogConstant.Task.Update;
                    log.Description = "OrderNo: " + ANO.OrderNo + "; Date: " + ANO.Date + "; PartNo: " + ANO.PartNo;
                    log.WriteLog();

                    MessageBox.Show("Đã nhập xong");
                }
                else
                {
                    MessageBox.Show("Gặp lỗi khi sửa dữ liệu.");
                }
            }
        }

        private void cbOrderNo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (flag)
            {
                lblMoc.Text = "";
                //ClsMOTable obj = ((ClsMOTable)cbOrderNo.SelectedItem);
                //lblPartID.Text = obj.PartID.ToString();
                //txtSlLenh.Text = obj.MOQty.ToString();
                //lblMoc.Text = obj.Moc8chinh.ToString();

                DataTable dtmo = clsXLBM.GetByMONo(cbOrderNo.Text);
                if (dtmo.Rows.Count > 0)
                {
                    lblMoc.Text = dtmo.Rows[0]["Moc8chinh"].ToString();
                    lblPartID.Text = dtmo.Rows[0]["PartID"].ToString();
                    txtSlLenh.Text = dtmo.Rows[0]["MOQty"].ToString();
                    //txtSoLuongMa.Text = dtmo.Rows[0]["MOQty"].ToString();
                }

                if (lblMoc.Text == "")
                {
                    lblMoc.Text = "0";
                }
                gridView1.ActiveFilterString = "[OrderNo] = '" + cbOrderNo.Text.Trim() + "'";
            }
        }

        private bool GetData()
        {
            if (Utilities.IsNullOrEmpty(cbOrderNo.SelectedValue) || cbOrderNo.SelectedItem == cbOrderNo.Items[0])
            {
                MessageBox.Show(@"Bạn phải nhập số Order.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                cbOrderNo.Focus();
                return false;
            }

            if (Utilities.IsNullOrEmpty(cbMeMa.SelectedValue) || cbMeMa.SelectedItem == cbMeMa.Items[0])
            {
                MessageBox.Show(@"Bạn phải nhập số thứ tự mẻ Mạ.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                cbMeMa.Focus();
                return false;
            }

            if (Utilities.IsNullOrEmpty(txtSoLuongMa.Text.Trim().Equals("")) || int.Parse(txtSoLuongMa.Text) < 0)
            {
                MessageBox.Show(@"Bạn phải nhập số lượng mạ.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtSoLuongMa.Focus();
                return false;
            }


            DataRow[] drTemp = clsXLBM.GetDulieuslMa().Select("M1 = '" + cbOrderNo.SelectedValue.ToString() + txtSoLanMaLai.Text + "'");
            int intX = 0;
            if (drTemp.Length > 0 && !Utilities.IsNullOrEmpty(drTemp[0]["AnoQuan"].ToString()))
            {
                intX = int.Parse(drTemp[0]["AnoQuan"].ToString());
            }

            if ((int.Parse(txtSoLuongMa.Text) + intX) > int.Parse(txtSlLenh.Text))
            {
                MessageBox.Show("Số lượng mẻ mạ phải nhỏ hơn hoặc bằng slg lệnh. \nHoặc tổng slg đã nhập trong cùng lần Mạ và số lượng nhập mới lớn hơn slg lệnh rồi. \nXem lại đây có phải là bị Mạ lại không.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtSoLuongMa.Focus();
                return false;
            }

            if (Utilities.IsNullOrEmpty(txtSoLanMaLai.Text.Trim().Equals("")) || int.Parse(txtSoLanMaLai.Text) < 0)
            {
                MessageBox.Show(@"Bạn phải nhập số lần mạ.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtSoLanMaLai.Focus();
                return false;
            }

            if (Utilities.IsNullOrEmpty(cbStaff.SelectedValue) || cbStaff.SelectedItem == cbStaff.Items[0])
            {
                MessageBox.Show(@"Bạn phải nhập code nhân viên.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                cbStaff.Focus();
                return false;
            }

            if (Utilities.IsNullOrEmpty(txtChieuDayMangMa.Text.Trim().Equals("")) || decimal.Parse(txtChieuDayMangMa.Text) < 0)
            {
                MessageBox.Show(@"Bạn phải nhập độ dày mạng mạ.", ToolConstants.Form.MessageBox.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtChieuDayMangMa.Focus();
                return false;
            }


            return true;
        }

    }
}